#pragma once

#include <Prs3d_NListOfSequenceOfPnt.hxx>
#include <AIS_InteractiveObject.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Edge.hxx>

class AIS_IsoGridFace;
DEFINE_STANDARD_HANDLE(AIS_IsoGridFace, AIS_InteractiveObject)


class AIS_IsoGridFace :
	public AIS_InteractiveObject
{
public:
	AIS_IsoGridFace(){}

	AIS_IsoGridFace(const TopoDS_Face& face);


	~AIS_IsoGridFace() {}

	DEFINE_STANDARD_RTTIEXT(AIS_IsoGridFace, AIS_InteractiveObject)

	virtual  void Compute(const Handle(PrsMgr_PresentationManager3d)& aPresentationManager, const Handle(Prs3d_Presentation)& aPresentation, const Standard_Integer aMode = 0);
	void ComputeSelection(const Handle(SelectMgr_Selection)&, const Standard_Integer) {}

protected:

	void drawIsoGrid(const Handle(Prs3d_Presentation)& aPrs);
	void drawWires(const Handle(Prs3d_Presentation)& aPrs);
	void drawEdge(const Handle(Prs3d_Presentation)& aPrs, const TopoDS_Edge& edge);

	Prs3d_NListOfSequenceOfPnt  myUPolylines;
	Prs3d_NListOfSequenceOfPnt	myVPolylines;

	TopoDS_Face myFace;
};

